# Copyright 2017 Glen Joseph Fernandes
# (glenjofe@gmail.com)
#
# Distributed under the Boost Software License, Version 1.0.
# (http://www.boost.org/LICENSE_1_0.txt)

language: cpp

sudo: false

dist: xenial

branches:
  only:
    - master
    - develop

env:
  matrix:
    - EMPTY=true

matrix:

  exclude:
    - env: EMPTY=true

  include:
    - os: linux
      compiler: g++
      env: TOOLSET=gcc COMPILER=g++ STANDARD=03,11

    - os: linux
      compiler: g++-4.4
      env: TOOLSET=gcc COMPILER=g++-4.4 STANDARD=98,0x
      addons:
        apt:
          packages:
            - g++-4.4
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-4.6
      env: TOOLSET=gcc COMPILER=g++-4.6 STANDARD=03,0x
      addons:
        apt:
          packages:
            - g++-4.6
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-4.7
      env: TOOLSET=gcc COMPILER=g++-4.7 STANDARD=03,11
      addons:
        apt:
          packages:
            - g++-4.7
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-4.8
      env: TOOLSET=gcc COMPILER=g++-4.8 STANDARD=03,11
      addons:
        apt:
          packages:
            - g++-4.8
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-4.9
      env: TOOLSET=gcc COMPILER=g++-4.9 STANDARD=03,11
      addons:
        apt:
          packages:
            - g++-4.9
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-5
      env: TOOLSET=gcc COMPILER=g++-5 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - g++-5
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-6
      env: TOOLSET=gcc COMPILER=g++-6 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - g++-6
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-7
      env: TOOLSET=gcc COMPILER=g++-7 STANDARD=03,11,14,17
      addons:
        apt:
          packages:
            - g++-7
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-8
      env: TOOLSET=gcc COMPILER=g++-8 STANDARD=03,11,14,17,2a
      addons:
        apt:
          packages:
            - g++-8
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: g++-9
      env: TOOLSET=gcc COMPILER=g++-9 STANDARD=03,11,14,17,2a
      addons:
        apt:
          packages:
            - g++-9
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++
      env: TOOLSET=clang COMPILER=clang++ STANDARD=03,11

    - os: linux
      dist: trusty
      compiler: /usr/bin/clang++
      env: TOOLSET=clang COMPILER=/usr/bin/clang++ STANDARD=03,11
      addons:
        apt:
          packages:
            - clang-3.3

    - os: linux
      dist: trusty
      compiler: /usr/bin/clang++
      env: TOOLSET=clang COMPILER=/usr/bin/clang++ STANDARD=03,11
      addons:
        apt:
          packages:
            - clang-3.4

    - os: linux
      dist: trusty
      compiler: clang++-3.5
      env: TOOLSET=clang COMPILER=clang++-3.5 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - clang-3.5
            - libstdc++-4.9-dev
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-precise-3.5

    - os: linux
      compiler: clang++-3.6
      env: TOOLSET=clang COMPILER=clang++-3.6 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - clang-3.6
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++-3.7
      env: TOOLSET=clang COMPILER=clang++-3.7 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - clang-3.7
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++-3.8
      env: TOOLSET=clang COMPILER=clang++-3.8 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - clang-3.8
            - libstdc++-4.9-dev
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++-3.9
      env: TOOLSET=clang COMPILER=clang++-3.9 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - clang-3.9
            - libstdc++-4.9-dev
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++-4.0
      env: TOOLSET=clang COMPILER=clang++-4.0 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - clang-4.0
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++-5.0
      env: TOOLSET=clang COMPILER=clang++-5.0 STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - clang-5.0
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++-6.0
      env: TOOLSET=clang COMPILER=clang++-6.0 STANDARD=03,11,14,17,2a
      addons:
        apt:
          packages:
            - clang-6.0
          sources:
            - ubuntu-toolchain-r-test

    - os: linux
      compiler: clang++-7
      env: TOOLSET=clang COMPILER=clang++-7 STANDARD=03,11,14,17,2a
      addons:
        apt:
          packages:
            - clang-7
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-xenial-7

    - os: linux
      compiler: clang++-8
      env: TOOLSET=clang COMPILER=clang++-8 STANDARD=03,11,14,17,2a
      addons:
        apt:
          packages:
            - clang-8
          sources:
            - ubuntu-toolchain-r-test
            - llvm-toolchain-xenial-8

    - os: linux
      dist: trusty
      compiler: clang++-libc++
      env: TOOLSET=clang COMPILER=clang++-libc++ STANDARD=03,11,14,1z
      addons:
        apt:
          packages:
            - libc++-dev

    - os: osx
      compiler: clang++
      env: TOOLSET=clang COMPILER=clang++ STANDARD=03,11,14,1z

install:
  - cd ..
  - git clone -b $TRAVIS_BRANCH https://github.com/boostorg/boost
  - cd boost
  - git submodule init libs/assert
  - git submodule init libs/config
  - git submodule init libs/core
  - git submodule init libs/static_assert
  - git submodule init libs/headers
  - git submodule init tools/build
  - git submodule init tools/boost_install
  - git submodule update
  - cp -R $TRAVIS_BUILD_DIR/* libs/align
  - ./bootstrap.sh
  - ./b2 headers

script:
  - |-
    echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
  - ./b2 libs/align/test toolset=$TOOLSET cxxstd=$STANDARD

notifications:
  email:
    on_success: always
